VimUnDo25EfWy2nUЂ &SychD% _ v hDm)

;

Online Users

?
"
<

5_5 v hDmK@

Online Containers

5_C v hDm`I
5_q v hDmw
Status:
5_ v hDm5_ v hDm 5_, v hDm/async function showContainerDialog(container) {5_  v hDm5_ !! v hDm!T const containers = await app.rpc.getOnlineContainers('{{ channel.uid.value }}');5_ .!! v hDm!T const containers = await app.rpc.getOnlineContainers('{{ channel.uid.value }}');5_ 2!! v hDn!N const containers = await app.rpc.getContainers('{{ channel.uid.value }}');!5_ !! v hDn!S const containers = await app.rpc.getContainerStatus('{{ channel.uid.value }}');5_  !! v hDn!L onlineContainerDialog.querySelector('container-list').data = containers;5_ ## v hDn&$T const containers = await app.rpc.getOnlineContainers('{{ channel.uid.value }}');# #5_F$$ v hDn-$Z onlineContainerDialog.querySelector('.container-status').innerHTML = container_status;$5_$$ v hDn4T const containers = await app.rpc.getOnlineContainers('{{ channel.uid.value }}');5_## v hDn75_"" v hDnF""
5_"## v hDnX $ <  $ #"
5_,$$ v hDne $V  $5_F$$ v hDnn $X  $5_J$$ v hDn $[ 5_.$$ v hDn $@ 5_K$$ v hDn $T 5_H$$ v hDn $ $5_ B%% v hDn %R 5_ H%% v hDn %Q 5_ F%% v hDn % %5_ G&& v hDn &P 5_ G&& v hDn &P 5_  A&& v hDn &S 5_! && v hDn!&}5_ "!(( v hDo"( (5_!#"!** v hDo  #*}5_"$#!++ v hDo  $+!"+5_#%$"-- v hDo!#- 5_$&%-- v hDo -(function updateContainerStatus(status) {5_%'& O-- v hDo!-P onlineContainerDialog.querySelector('.container-status').innerText = status; !-5_&('"-- v hDo*!%- "#-5_')(%// v hDo/%*0 &'0$'/ }5_(*)!33 v hDoH "3 if(status == 'Running'){5_)+*33 v hDo^Z onlineContainerDialog.querySelector('.container-status').innerText = container_status;5_*-+22 v hDoaL onlineContainerDialog.querySelector('container-list').data = containers;5_+.,-1vhDo1

8

Container

V
Status:
 "
R V P <

5_-0.11vhDo1-closeButton.addEventListener('click', () => {1-closeButton.addEventListener('click', () => {5_.1/00vhDp!0Dconst containerDialog = document.getElementById("container-dialog");5_0214vhDp$O445_132RpvhDp)QRH const containerDialog = document.getElementById("container-dialog");5_243RovhDp*QRLconst closeButton = containerDialog.querySelector('.dialog-button.primary');5_354RnvhDp*QR-closeButton.addEventListener('click', () => {5_465RmvhDp+QR containerDialog.close();5_576RlvhDp+QR});5_687RkvhDp,QR&async function showContainerDialog() {5_798RjvhDp,QRY const container_status = await app.rpc.getContainerStatus('{{ channel.uid.value }}');5_8:9RivhDp,QR containerDialog.showModal();5_9;:RhvhDp-QR closeButton.focus();5_:<;RgvhDp-QR}5_;=<RfvhDp-QR2function updateContainerStatus(container_status) {5_<>=RevhDp-QRT containerDialog.querySelector('.container-status').innerText = container_status;5_=?>RdvhDp-QR& if(container_status == 'running'){5_>@?RcvhDp-QRN containerDialog.querySelector('.btn-container-stop').disabled = false;5_?A@RbvhDp.QRN containerDialog.querySelector('.btn-container-start').disabled = true;5_@BARavhDp.QRQ containerDialog.querySelector('.btn-container-restart').disabled = false;5_ACBR`vhDp.QR }else{5_BDCR_vhDp/QRM containerDialog.querySelector('.btn-container-stop').disabled = true;5_CEDR^vhDp/QRO containerDialog.querySelector('.btn-container-start').disabled = false;5_DFER]vhDp/QRP containerDialog.querySelector('.btn-container-restart').disabled = true;5_EGFR\vhDp/QR }5_FHGR[vhDp/QR}5_GIHRZvhDp0QR5_HJIRYvhDp0QR&async function showContainerOnline() {5_IKJRXvhDp1QRT const containers = await app.rpc.getOnlineContainers('{{ channel.uid.value }}');5_JLKRWvhDp1QRF containerDialog.querySelector('container-list').data = containers;5_KMLRVvhDp1QR containerDialog.showModal();5_LNMRUvhDp2QR closeButton.focus();5_MONRTvhDp2QR}5_NPOSvhDpnS

8

Container

V
Status:
 "
R V P <

5_OQPvhDp5_PRQ%vhDp%5_QSRvhDp%5_RTS`vhDp_`$ async openWithOnlineContainers() {5_SUT`vhDp_`" if (!this._channelUid) return;5_TVU`vhDp_`o const containers = await (window.app?.rpc?.getOnlineContainers?.(this._channelUid) ?? Promise.resolve([]));5_UWV`vhDp_`= let containerList = this.querySelector('container-list');5_VXW`vhDp_` if (containerList) {5_WYX`vhDp_`& containerList.data = containers;5_XZY`vhDp_` }5_Y[Z`vhDp_` this._dialog.showModal();5_Z\[`vhDp_` this._closeButton.focus();5_[]\`~~vhDp_` }5_\^]}}vhDq} this._channelUid = null;}5_]_^5}}vhDq}8 this._channelUid = this.getAttribute('channel-uid');5_^`_}'}}vhDq|;}5__a`};}}vhDq(|S}5_`ba}]hDq=}5_acbhDqO# containerDialog.openWithStatus();5_bdcHhDsGJ" if (!this._channelUid) return;5_cedIhDsHJ$ if (!this._channelUid) return;5_dfeHhDsGI HI5_egf3vhDs4 this._channelUid = this.getAttribute('channel');5_fhg3vhDs this._  connectedCallback() {5_gihK=hD~JLq const status = await (window.app?.rpc?.getContainerStatus?.(this._channelUid) ?? Promise.resolve('unknown'));5_hjiLhD~KM this.updateStatus(status);5_ikjKhD~JLk const status = await (window.app?.rpc?.getContainer?.(this._channelUid) ?? Promise.resolve('unknown'));5_jlkLhD~KM this.updateStatus(containe);LM5_kmlL+hDOQ this.updateNa PQNQ this.updateIm OPMP this.updateMemory( NOLO this.updateCpus( MNKN+ this.updateStatus(container['status']);5_lnm&hD85_monhD95_npohD95_oqphD:5_prqhD=< Status: 5_qsrhD@< Status: 5_rtshDC< Status: 5_suthDH< Status: 5_tvu3hDL< Memory: 5_uwv1hDP: Cpus: 5_vxw2hDT; Image: 5_wyx1hDV: Name: 5_xzyhDc8 Name: 5_y{z=hDh=
Name: 5_z|{:hDj: Image: 5_{}|8hDn8 Cpus: 5_|~}<hDq< Memory: 5_}~<hDs< Status: 5_~hDxB Status:
5_hD|B Memory:
5_hD~> Cpus:
5_hD@ Image: 5_  GvGhD/C
Name:
E
Image:
C
Cpus:
G
Memory:
G
Status:
 5_@/ /RvGhD(@B@A5_A/ /RvGhD*@B? this._statusSpan = this.querySelector('.container-status');5_A/ /RvGhD.ACAB5_B/ /RvGhD0AC? this._memorySpan = this.querySelector('.container-status');5_B / /RvGhD3BDBC5_C/ /RvGhD4BD= this._cpusSpan = this.querySelector('.container-status');5_C:/ /RvGhD:BD= this._nameSpan = this.querySelector('.container-status');5_B:/ /RvGhD<AC= this._cpusSpan = this.querySelector('.container-status');5_A</ /RvGhD@@B? this._memorySpan = this.querySelector('.container-status');5_@;/ /RvGhDO@B@A5_A/ /RvGhDQ@B? this._statusSpan = this.querySelector('.container-status');5_A;/ /RvGhDU@B> this._imageSpan = this.querySelector('.container-status');5_eezvhDdefdf+ this.updateStatus(container['status']);' this.updateCpus(container['cpus']);+ this.updateMemory(container['memory']);) this.updateImage(container['image']);' this.updateName(container['name']); this._dialog.showModal(); this._closeButton.focus(); } updateStatus(status) {( this._statusSpan.innerText = status; if (status === 'running') {( this._stopButton.disabled = false;( this._startButton.disabled = true;+ this._restartButton.disabled = false; } else {' this._stopButton.disabled = true;) this._startButton.disabled = false;* this._restartButton.disabled = true; } } close() {5_vhD 4class ContainerDialogComponent extends HTMLElement { constructor() { super(); this._channelUid = null; this._dialog = null; this._closeButton = null; this._startButton = null; this._restartButton = null; this._stopButton = null; this._statusSpan = null; this._actions = null; this._containerList = null; } connectedCallback() {4 this._channelUid = this.getAttribute('channel'); // Render template this.innerHTML = `' %
"
>

Container

(
$  1    2    1    3    3  
Name
Image
CPUs
Memory
Status

(
X \ V V 



 `;0 this._dialog = this.querySelector('dialog');C this._closeButton = this.querySelector('.btn-container-close');C this._startButton = this.querySelector('.btn-container-start');G this._restartButton = this.querySelector('.btn-container-restart');A this._stopButton = this.querySelector('.btn-container-stop');? this._statusSpan = this.querySelector('.container-status');= this._imageSpan = this.querySelector('.container-image');? this._memorySpan = this.querySelector('.container-memory');; this._cpusSpan = this.querySelector('.container-cpus');; this._nameSpan = this.querySelector('.container-name');: this._actions = this.querySelector('.dialog-actions'); this._initEventListeners(); } set channelUid(val) { this._channelUid = val; } get channelUid() { return this._channelUid; } _initEventListeners() { if (this._closeButton) {F this._closeButton.addEventListener('click', () => this.close()); } if (this._startButton) {O this._startButton.addEventListener('click', () => this.startContainer()); } if (this._restartButton) {S this._restartButton.addEventListener('click', () => this.restartContainer()); } if (this._stopButton) {M this._stopButton.addEventListener('click', () => this.stopContainer()); } } async openWithStatus() { alert(this._channelUid)" if (!this._channelUid) return;n const container = await (window.app?.rpc?.getContainer?.(this._channelUid) ?? Promise.resolve('unknown')); updateContainerInfo(container) {) this.updateStatus(container['status']);% this.updateCpus(container['cpus']);) this.updateMemory(container['memory']);' this.updateImage(container['image']);% this.updateName(container['name']); this._dialog.showModal(); this._closeButton.focus();}updateStatus(status) {& this._statusSpan.innerText = status; if (status === 'running') {& this._stopButton.disabled = false;& this._startButton.disabled = true;) this._restartButton.disabled = false; } else {% this._stopButton.disabled = true;' this._startButton.disabled = false;( this._restartButton.disabled = true; }}updateCpus(cpus) { if (this._cpusSpan) {$ this._cpusSpan.innerText = cpus; }}updateMemory(memory) { if (this._memorySpan) {( this._memorySpan.innerText = memory; }}updateImage(image) { if (this._imageSpan) {& this._imageSpan.innerText = image; }}updateName(name) { if (this._nameSpan) {$ this._nameSpan.innerText = name; }} close() { this._dialog.close(); }) // Placeholder for container operations async startContainer() {" if (!this._channelUid) return;* if (window.app?.rpc?.startContainer) {< await window.app.rpc.startContainer(this._channelUid);" await this.openWithStatus(); } } async stopContainer() {" if (!this._channelUid) return;) if (window.app?.rpc?.stopContainer) {; await window.app.rpc.stopContainer(this._channelUid);" await this.openWithStatus(); } } async restartContainer() {" if (!this._channelUid) return;, if (window.app?.rpc?.restartContainer) {> await window.app.rpc.restartContainer(this._channelUid);" await this.openWithStatus(); } }}DcustomElements.define('container-dialog', ContainerDialogComponent);5_1 hD02X 5_4hD36V 5_4 hD46455_5hD 35 J46X 5_chD$ bc alert(this._channelUid)5_evhDd| close() {efde&#updateContainerDetails(container) {) this.updateStatus(container['status']);% this.updateCpus(container['cpus']);) this.updateMemory(container['memory']);' this.updateImage(container['image']);% this.updateName(container['name']); this._dialog.showModal(); this._closeButton.focus();}updateStatus(status) {& this._statusSpan.innerText = status; if (status === 'running') {& this._stopButton.disabled = false;& this._startButton.disabled = true;) this._restartButton.disabled = false; } else {% this._stopButton.disabled = true;' this._startButton.disabled = false;( this._restartButton.disabled = true; }}updateCpus(cpus) {" this._cpusSpan.innerText = cpus;}updateMemory(memory) {& this._memorySpan.innerText = memory;}updateImage(image) {$ this._imageSpan.innerText = image;}updateName(name) {" this._nameSpan.innerText = name;}5_e / /RvGhDkdf* this.pdateStatus(container['status']);5_ / /RvGhD $  1    2    1    3    3  
Name
Image
CPUs
Memory
Status
5_.0/=.v.hDo1?5_+-,00 v hDop05